import 'package:flutter/material.dart';

import '../../utils/eventbus.dart';
import '../../utils/http.dart';
import '../../utils/toast.dart';
import 'components/house_item.dart';

class HouseList extends StatefulWidget {
  const HouseList({super.key});

  @override
  State<HouseList> createState() => _HouseListState();
}

class _HouseListState extends State<HouseList> {
  List houseList = [];
  bool isLoadingData = false;

  // 发送网络请求
  void getHouseList() async {
    setState(() {
      isLoadingData = true;
    });
    try {
      // 请求数据
      var res = await http.get('/room');
      if (res['code'] != 10000) return ToastUtil.showError('获取数据失败');
      ToastUtil.showSuccess('获取数据成功');
      setState(() {
        houseList = res['data'];
        isLoadingData = false;
      });
    } catch (e) {
      debugPrint('请求失败：$e');
      ToastUtil.showError('获取数据失败');
    }
  }

  @override
  void initState() {
    super.initState();
    getHouseList();

    eventBus.on<RefreshHouseList>().listen((event) {
      setState(() {
        houseList = [];
        getHouseList();
      });
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
        backgroundColor: const Color.fromARGB(255, 241, 238, 238),
        appBar: AppBar(
          title: const Text('我的房屋'),
          backgroundColor: Colors.transparent,
          centerTitle: true,
        ),
        body: isLoadingData
            ? Center(
                child: CircularProgressIndicator(),
              )
            : Stack(children: [
                Padding(
                  padding:
                      const EdgeInsets.only(bottom: 80, left: 10, right: 10),
                  child: ListView.separated(
                      itemBuilder: (BuildContext context, int index) {
                        return HouseItem(
                          houseItem: houseList[index],
                        );
                      },
                      separatorBuilder: (BuildContext context, int index) {
                        return Container(
                          height: 10,
                          color: const Color.fromARGB(255, 241, 238, 238),
                        );
                      },
                      itemCount: houseList.length),
                ),
                Positioned(
                  bottom: 0,
                  left: 0,
                  right: 0,
                  child: Container(
                      padding: const EdgeInsets.all(10),
                      color: Colors.transparent,
                      child: Row(children: [
                        Expanded(
                            child: ElevatedButton(
                                onPressed: () {
                                  Navigator.pushNamed(
                                      context, '/location_list');
                                },
                                child: const Column(children: [
                                  SizedBox(height: 5),
                                  Icon(Icons.add),
                                  Text('添加房屋'),
                                  SizedBox(height: 5),
                                ])))
                      ])),
                )
              ]));
  }
}
